***********************************************************************************************
文字列検索ツール 制作秘話
Copyright(C) 2016 by しげるがもげる
***********************************************************************************************
◆はじめに
このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
技術的な細かいことに興味のない方は、読み飛ばしてください。
エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。
◆制作秘話
エクセルファイルのシートに,大事な事をメモして保存しておくのだけれど,時としてどのファイルに書いたか忘れてしまうことがある。
「きっとこんなファイル名を付けたはず。」
でも,多くの場合は見つからず,期待を裏切られます。
そこで,ファイルを探すツールがあれば便利だと思い,これを作りました。
◆工夫や苦労など
<検索の仕方>
最初は,Findメソッドを使っていたのですが,こちらがやりたいことをするには少々複雑になるので,コードが簡単でわかりやすい
Like演算子を使うことにしました。
検索した文字が含まれている言葉を探すので,設定は "*" & 文字列 & "*" としてあります。
こうすることで,この文字を含んだ文字列を調べることができます。
<全ワークシートを調べる>
全ワークシートを調べるためのコードは,
For Each Ws In Worksheets 〜〜〜 next Ws として,間にマクロを書きます。
これで全ワークシートを検索することができます。
また,ワークシートのどの範囲のセルを調べればよいのか。それには,こうします。
For Each Rg In ActiveSheet.UsedRange
これで,使っている範囲のセルを対象に調べます。
<サブフォルダも調べる>
これについては,「再帰呼び出し」を使いました。
そして,サブフォルダが存在すれば,そこも調べるようにしました。
<検索速度の高速化>
本当は,Findメソッドの方が速いのだろうけれど,Like演算子でできる高速化を取り入れました。
ひとつめは,処理の始まる前に再計算を手動にし,終わった時に自動に戻しました。
こうすることで,関数の計算が止まり,処理速度を上げることができます。
ふたつめは,途中表示を検索中はしないようにしました。(オプション)
そして,見つかった時だけ,画面の更新をし,正しい表示にさせました。
PCの処理の中で,画面表示にかなり時間がかかっています。それを軽減するものです。
<各種のチェックボックス>
文字が見つかった時に開くウインドウ。
普通,探していた文字が見つかったら,それで終わりではありません。
そのファイルでやりたい仕事をやったりするのが多いかと思います。
そこで便利なように,フォルダを開いたり,検索ツールを終了させたりするチェックボックスを付けました。
これで,検索ツールから仕事へ,楽に移動することができます。
◆最後に
ここまで、熱心に読んでくださってありがとうございました。
プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
マクロに興味を持っていただければ、と思っています。
エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
そんなエクセルに、日々、感謝です。